The present invention involves a system that employs network loadable debugging agents, which are capable of first failure support for software products. The present invention enables the user working with object-oriented operating systems to debug problems within various subsystems with specifically targeted debugging agents. The current implementation enables someone to look into, and interact with, the windowing subsystem on the JavaOS Network Computer operating System from any location on a network without the need for any special software to be loaded onto the system prior to a failure occurring. This same mechanism is capable of working on any object-oriented operating system connected to a network.
The 1990""s decade has been marked by a societal technological revolution driven by the convergence of the data processing industry with the consumer electronics industry. Like all such revolutions, it unleashed a gigantic ripple effect of technological waves. The effect has, in turn, driven technologies which have been known and available but relatively quiescent over the years. Two of these technologies are the Internet and the Java Programming Language, which provide for network distribution of xe2x80x9cobject-orientedxe2x80x9d programs to millions of users worldwide.
The computer and communications industries have extensively participated in the development and continual upgrading of the Java system. For details and background with respect to the Java system reference may be made to a typical text, xe2x80x9cJust Javaxe2x80x9d, 2nd Edition, Peter van der Linden, Sun Microsystems, 1997.
With the multitude of different computer architectures employed by the millions of users connected to the Internet, an obvious need became apparent: software programs that could be written once for all platforms, delivered across the Internet and would execute on the user""s particular system consistent with the developer""s design. This need was filled by Sun Microsystems"" Java programming language and virtual machine architecture. Now developers could produce a single program that could be delivered to any computer and would execute correctly, regardless of the underlying computer""s operating system. In doing so, Sun chose an object-oriented approach for their new language.
The combination of the Java language and virtual machine specification allow for objects to be sent across a network to a user machine where they will then execute some task on that machine.
In this context, the present invention specifically addresses the need for the user to gather information about a problem on an object-oriented computer operating system connected to a network without having to force the system to be rebooted and a different version of the operating system installed prior to diagnosing the problem. As a result of the present invention, when a problem occurs on the system, the user can download a debugging agent onto the system at that instant and subsequently collect information (or debug) the system the first time the problem occurs.
All debugging tools force the user of the failing system to intervene at the time of failure or they must use a special version of the operating system that is built for debugging, requiring them to restart their system and attempt to recreate the problem. It is, therefore, a distinct advantage to have a system that overcomes these problems. The present invention provides such a system and apparatus.
Before going into the details of the operation of the present invention, it would be appropriate to define certain terms which are used in the description of the current invention; these are listed below.
xe2x80x9cJavaxe2x80x9d, well established in the late 1990""s, is an object-oriented programming language, developed, as noted above, by Sun Microsystems, Inc. (Sun). While Java is similar to C++, Java is smaller, more portable and easier to use than C++. This is because it is more robust and it manages memory on its own.
Java was designed to be secure and platform neutral. In other words, it can be run on any platform that supports a Java Runtime Environment (JRE) and a Java Virtual Machine (JVM), since Java programs are complied into byte-codes, which are similar to machine code and are not specific to any platform. xe2x80x9cAWTxe2x80x9d (Java""s Abstract Windowing Toolkit) is an integral part of the JRE that implements Java""s Graphical User Interface (GUI). The Java AWT is a collection of classes that allow for the creation of platform independent user interfaces. Just as Java programs are platform independent, capable of running on any computer that has a JRE installed, so too are the user interfaces created with the AWT.
The term xe2x80x9cdebugxe2x80x9d in this invention""s context means to detect logical or syntactical errors in a program.
Another term used in connection with this invention is the term xe2x80x9cAgentxe2x80x9d, which means a program entity that performs a task remote on the behalf of the caller.
The term xe2x80x9cInternetxe2x80x9d was derived from an early project by U.S. Defense Department and several universities called xe2x80x9cARPAnetxe2x80x9d that interconnected several networks for easier collaboration and data sharing among the participating sites. The Internet grew out of this project, remaining in relative obscurity until the early 1990""s when commercial ventures began populating it with interesting content.
The term xe2x80x9cfootprintxe2x80x9d is defined as the amount of memory consumed by a computer program as it is initiated and executed in a computer system.
The term xe2x80x9cServerxe2x80x9d in the context of this invention, pertains to a computer that is capable of supplying objects or data via specific communication protocols to other systems on a network.
The term xe2x80x9csnapshotxe2x80x9d is defined as a collection of data describing the state of the machine being debugged, which is generally information in the memory of that computer.
The term xe2x80x9cframeworkxe2x80x9d as used in the context of this invention is a set of predefined classes which can be extended and combined to create a complete program.
A need exists for the ability to collect information about a failing object-oriented computer system connected to a network the first time that a failure appears on that system. This includes collecting information on computer systems that do not contain any resident debugging facilities, as well as being able to collect this information without any intervention by the user.
This invention enables a networked computer""s problems to be investigated by specialized agents that are loaded onto the failing system over a network after the failure appears. These agents are then capable of interacting with the failing system to enable a remote user to obtain enough information to diagnose the problem.
Thus, the following advantages are attained via the use of the system representing the present invention:
1. The ability to collect information on problems when they first occur on a networked computer.
2. The ability to have a large set of highly specialized xe2x80x9cagentsxe2x80x9d that are each capable of dealing with separate parts of the product, that can be selected and downloaded based on the symptoms of the problem.
3. Where normal debuggers must be built into the system causing a growth in the product""s footprint, this method enables a product to maintain it""s normal size and performance while still being able to be debugged when necessary.
4. There is no need to provide multiple versions of a product (normally termed xe2x80x9cretail and debug imagesxe2x80x9d).
5. The problem of intermittent failures only appearing on retail images is eliminated.
6. There is no longer a need to reload a system with a xe2x80x9cdebugxe2x80x9d image prior to recreating the problem in order to diagnose it, since agents are loaded onto the system at the first sign of a failure.